The rise/fall time of signals traveling between a CPU and chipset will often vary because of one or more external influences. These influences include variations in silicon strength caused by process, voltage and/or temperature conditions that exist across large numbers of dies. Uncompensated-for changes in supply voltage also contribute to rise/fall time variations. If left unaddressed, these variations will adversely affect system performance. For example, if the rise/fall time is too slow, timing failures are likely to occur. Conversely, if the rise/fall time is too fast, signal integrity and reliability problems may arise because of large reflections and over/undershoot effects.
Various methods have been proposed for controlling the rise/fall times of I/O driving signals on the motherboard of a computer. One method involves matching the strength of a pre-driver circuit against a predetermined DC resistance. This requires manipulating the resistance portion of an RC delay between the pre-driver and a driver circuit in a Gunning transistor logic (GTL) buffer. Through these manipulations, the turn-on and turn-off rates of the driver can be adjusted, to thereby control I/O rise/fall times.
Another method involves performing on-die termination compensation. According to this method, Rtt compensation bits are used to access a look-up table of slew-rate compensation bits. This table is usually included in a ROM preprogrammed with slew-rate compensation bit settings that correspond to desired pre-driver strengths based on the strength of the Rtt.
The methods described above suffer from a number of drawbacks. For example, both methods take an indirect approach to controlling rise/fall times that is considered to be slow and inefficient. More specifically, in both methods the resistance required to achieve a constant rise/fall time varies across process, voltage, and temperature corners, and the driver of the GTL buffer is compensated so the capacitance portion of the RC delay varies. Also, in both methods the circuit structure used for compensation differs significantly from the pre-driver structure being compensated. This can lead to poor edge rates, even in cases where the compensation circuit works properly.